package com.skyline.wizard.searcher;

import java.util.List;

import com.skyline.common.bean.Page;
import com.skyline.user.model.User;
import com.skyline.user.type.Sex;

/**
 * Class <code>Searcher</code> 用户通过Searcher来查询
 * 
 * @author Jairus Chan
 * @version 0.1, 11/30/10
 * @since JDK1.6
 */

public interface UserSearcher extends Searcher<User>{

	/**
	 * searchWithStandardAnalyzer(String queryString, Page page,String[] fields)
	 * 通过Lucene的标准Analyzer查询，内部实现是通过调用search()方法
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @return ResultSet
	 */
	public List<User> searchWithStandardAnalyzer(String queryString, Page page);

	/**
	 * searchWithDefaultAnalyzer(String queryString, Page page,String[] fields)
	 * 通过用户自定义的默认Analyzer查询，内部实现是通过调用search()方法
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @return ResultSet
	 */
	public List<User> searchWithDefaultAnalyzer(String queryString, Page page);

	/**
	 * searchWithStandardAnalyzer(String queryString, Page page,String[] fields)
	 * 通过Lucene的标准Analyzer查询，内部实现是通过调用search()方法
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @return ResultSet
	 */
	public List<User> searchWithStandardAnalyzer(String name, String nickname, String province, String city,
			String graduateSchool, Sex sex, Integer lowAge, Integer upAge, Page page);

	/**
	 * searchWithDefaultAnalyzer(String queryString, Page page,String[] fields)
	 * 通过用户自定义的默认Analyzer查询，内部实现是通过调用search()方法
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @return ResultSet
	 */
	public List<User> searchWithDefaultAnalyzer(String name, String nickname, String province, String city,
			String graduateSchool, Sex sex, Integer lowAge, Integer upAge, Page page);
	
}
